package cn.itcast.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
 * 过滤器
 */
@WebFilter("/*")
public class Demo_02Filter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
      //先拦截所有请求，按情况放行，1，是去登录页面的要放行，要不然就进入死循环，为什么不让我登录？因为你没登陆
        //获取请求路径,先将参数向下转型
        HttpServletRequest request = (HttpServletRequest) req;
        //获取请求路径
        String uri = request.getRequestURI();
        //如果请求路径中包含login关键字则视为和登录有关放行
        // 或者已经登录过的即session中有一个值为username的，也放行
        if(uri.contains("login") || request.getSession().getAttribute("username")!=null){
            //放行
            chain.doFilter(req,resp);
        }else {//剩下的就拦住不让进，登录去吧
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }
    }
}
